<?php
declare (strict_types = 1);

namespace app\controller;

use app\model\City;
use think\Request;

class CityController
{

    protected $cityModel;

    public function __construct(){
        $this->cityModel = new City();
    }


//    获取省份/城市/区，并返回对应的格式
    public function city_name()
    {
        // 首先找到parent_id = 0 的城市，这代表没有父类了
        try {
            $res = $this->cityModel->where('parent_id', 0)->select();
            // 拿到所有省份的名称
            $province = $res->column('name', 'area_id');
        }catch (\Exception $e){
            return json([
                "code" => 400,
                "message" => $e->getMessage(),
            ]);
        }

        // 拿到所有省份的area_id,它代表的是市的parent_id
        $citys = [];
        foreach ($province as $areaId => $name) {
            $city = $this->cityModel->where('parent_id', $areaId)->select();
            $citys[$areaId] = $city->column('name', 'area_id');
        }
        // 将数据转为对应的格式
        $datas = [];
        foreach ($province as $areaId => $name) {
            // 省份信息
            $datas[] = [
                'value' => $areaId,
                'label' => $name,
                'children' => []  // 初始化children数组
            ];

            // 如果存在城市数据，则添加到children中
            if (isset($citys[$areaId])) {
                foreach ($citys[$areaId] as $cityAreaId => $cityName) {
                    // 城市信息
                    $datas[count($datas) - 1]['children'][] = [
                        'value' => $cityAreaId,
                        'label' => $cityName
                    ];
                }
            }
        }
        // 返回JSON格式的数据
        return json(["data" => $datas,"code" => 200,"message" => "success"]);
    }
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        //
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        //
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //
    }
}
